#version 330

in vec3 vD;
in vec3 vN;
in vec4 vColor;

out vec4 fColor;

uniform vec4 uColor;
uniform bool uLine;

const vec3 L = vec3(0, 0, -1);
void main()
{
	fColor = uColor;

	if (!uLine) 
	{
		fColor.rgb *= abs(dot(-L, vN));

		if (dot(-L, vN)>0) 
		{
			vec3 R = reflect(L, vN);
			fColor.rgb += vec3(1) * max(0, pow(dot(R, vD), 100));
		}
	}

	fColor.a = 1;
}